package testes;

import static org.junit.Assert.*;

import java.util.HashSet;
import java.util.Set;

import org.bunny.businessLayer.CalendarDate;
import org.bunny.businessLayer.Campeonato;
import org.bunny.businessLayer.Cidade;
import org.bunny.businessLayer.Clube;
import org.bunny.businessLayer.Continente;
import org.bunny.businessLayer.Equipa;
import org.bunny.businessLayer.Grupo;
import org.bunny.businessLayer.Jogador;
import org.bunny.businessLayer.Jogo;
import org.bunny.businessLayer.Pais;
import org.bunny.businessLayer.Participacao;
import org.bunny.businessLayer.Participante;
import org.bunny.businessLayer.PosicaoJogador;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class PaisTest {

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
	}

	@Before
	public void setUp() throws Exception {
	}

	@After
	public void tearDown() throws Exception {
	}


	@Test
	public void testPaisIntStringIntContinenteGrupo() {
		Continente eu = new Continente("Europa");
		Grupo g = new Grupo();
		
		Pais a = new Pais(20000, "Portugal", 1000000, eu, g);
		
		a.setPopulacao(40000);
		assertEquals(40000, a.populacao());
		
		a.setArea(10000);
		assertEquals(10000,a.area());
		
		a.setNome("Espanha");
		assertEquals("Espanha",a.nome());
		
		Grupo g2 = new Grupo();
		a.setGrupo(g2);
		assertSame(g2,a.grupo());
		
		Continente am = new Continente();
		a.setContinente(am);
		assertSame(am,a.continente());
		
		
		Clube c1 = new Clube();
		Clube c2 = new Clube();
		Set<Clube> resultC = new HashSet<Clube>();
		resultC.add(c2);
		
		//Clube.allInstances.add(c1);
		
		a.setClubes(resultC);
		
		Set<Clube> lol = a.clubes();
		assertEquals(resultC,lol);
		
		Jogador part1 =  new Jogador(new CalendarDate(1,1,1990), "Part 1", a, PosicaoJogador.Defesa, c1);	
		Jogador part2 =  new Jogador(new CalendarDate(3,4,2000), "Part 2", a, PosicaoJogador.Avancado, c2);
		
		Set<Participante> resultP = new HashSet<Participante>();
		resultP.add(part2);
		
		a.setNacionais(resultP);

		Set<Participante> tenta = a.nacionais();
		//assertEquals(resultP,tenta);
		
		Set<Equipa> resultE = new HashSet<Equipa>();
		Equipa eq1 = new Equipa();
		Equipa eq2 = new Equipa();
		resultE.add(eq2);
		
		a.setEquipa(resultE);
		
		assertEquals(resultE,a.equipa());
		
		Set<Jogo> resultJ = new HashSet<Jogo>();
		Jogo jogo1 = new Jogo();
		Jogo jogo2 = new Jogo();
		
		resultJ.add(jogo2);
		
		a.setJogo(resultJ);
		assertEquals(resultJ,a.jogo());
		
		
		Set<Cidade> resultCid = new HashSet<Cidade>();
		Cidade cid1 = new Cidade();
		Cidade cid2 = new Cidade();
		
		resultCid.add(cid2);
		
		a.setCidades(resultCid);
		assertEquals(resultCid,a.cidades());
		
		Set<Participacao> resultPar = new HashSet<Participacao>();
		Participacao parti1 = new Participacao();
		Participacao parti2 = new Participacao();
		resultPar.add(parti1);
		
		a.setParticipacao(resultPar);
		assertEquals(resultPar, a.participacao());
		
		Set<Campeonato> resultCampeo = new HashSet<Campeonato>();
		Campeonato cam1=new Campeonato();
		Campeonato cam2 = new Campeonato();
		resultCampeo.add(cam1);
		
		a.setParticipado(resultCampeo);
		assertEquals(resultCampeo,a.participado());
		}

	

}
